Jupyterノートブックプロット#

Jupyter ノートで pyvista でインタラクティブにプロットします.

注釈

Trameベースの後援を使用することをお勧めします. PyVista用Jupyterバックエンドをtrame化する を参照してください.

pythreejs を使ったデモ#

pythreejs を使ってインタラクティブな物理ベースのレンダリングを行います.

import pyvista as pv
from pyvista import examples

# download an example and display it using physically based rendering.
mesh = examples.download_lucy()
mesh.plot(color='lightgrey', pbr=True, metallic=0.2,
          jupyter_backend='pythreejs')

ipygany を使ったデモ#

from pyvista import demos

# basic glyphs demo
mesh = demos.glyphs(2)

text = demos.logo.text_3d("I'm interactive!", depth=0.2)
text.points *= 0.1
text.translate([0, 1.4, 1.5], inplace=True)
mesh += text
mesh['Example Scalars'] = mesh.points[:, 0]

mesh.plot(cpos='xy', jupyter_backend='ipygany', show_scalar_bar=True)

panel を使ったデモ#

from pyvista import demos
demos.plot_logo(jupyter_backend='panel')

サポートされるモジュール#

PyVistaモジュールは,Jupyterノートブック内でプロットする際のさまざまなバックエンドをサポートしています:

  • trame を介したノートブックへのPyVistaストリーミングによるサーバとクライアント側のレンダリング

  • pythreejs を使ったクライアントサイドレンダリング threejs を使ったクライアントサイドレンダリング.

  • threejs を使用した ipygany によるクライアント側レンダリング.

  • vtk.js を使用した panel を使用したクライアント側レンダリング.

  • 静止画像.


各バックエンドの詳細#

これらの描画バックエンドの使用方法の詳細については,各バックエンドの個々のパッケージページを参照してください.

3 D対話型Jupyterプロットの状態#

注釈

Jupyterノートブック内の3 Dプロットは,Jupyterがまだ比較的新しい技術であることもありますが,ここで使用されているWeb技術も新しい技術であり,ますます多くのユーザや開発者がクラウドやクラウドベースのビジュアライゼーションに移行しているため,急速に発展しています.ここにあるものは壊れ,急速に変化する可能性が高いです

これは2021年3月に書かれ,2023年1月に更新されたもので,すでに古くなっている可能性があります. 必ず,開発者のウェブサイトで変更点を確認してください.

Jupyterを使用してプロットする場合は,多数のモジュールのいずれかを使用することもできますが,それぞれに長所,短所,および短所があります. pyvistaPlotting クラスを使用するときにAPIの違いのいくつかを取り除こうとしますが,プロットはバックエンドによって異なるように見えます.また,バックエンドが異なると要件も異なり,展開環境をサポートしない場合があります.

次の表に,jupyterノートブックプロットモジュールで使用されるさまざまな機能とテクノロジを示します.

Jupyterノートブック3 Dモジュール

レンダリングの場所

バックエンド

フレームバッファが必要

trame

クライアントとサーバー

vtk.js と vtk

オプション

panel

クライアント

vtk.js

Yes

pythreejs

クライアント

threejs

いいえ

ipygany

クライアント

threejs

いいえ

trame, ipygany, pythreejs 以外のモジュールはフレームバッファを必要とし,ヘッドレス環境では pyvista.start_xvfb() でセットアップを行うことができます.しかし,システムパッケージをインストールできないGoogle Colabでは, threejs や trame-backend の 'client' のような,サーバサイドレンダリングやフレームバッファを必要としないモジュールにこだわる必要があります( PyVista用Jupyterバックエンドをtrame化する を参照).

フレームバッファを必要とするバックエンドのためのヘッドレス環境へのインストールの詳細については, インストール を参照してください.個々のパッケージをインストールする場合,簡単な pip install <package> を使用してJupyterlab 3互換パッケージをインストールできます.詳細は,他のパッケージのインストール手順を参照してください.

PyVistaでの使用法#

jupyterのプロッティングバックエンドを設定するには2つの方法があります. まず, Plotter.show()dataset.plot()``jupyter_backend` パラメータを設定することで,プロットごとに設定することができます. また, pyvista.set_jupyter_backend() でグローバルに設定することもできます. 詳細はこちらをご覧ください.

import pyvista as pv
pv.set_jupyter_backend('trame')
set_jupyter_backend(backend)[ソース]#

Jupyterノートブックのプロットバックエンドを設定します.

パラメータ:
backendstr

プロット時に使用するJupyterバックエンドです.次のいずれかである必要があります.

  • 'ipyvtklink' : リモートでレンダリングし,結果のVTKイメージをクライアントにストリーミングします.すべてのVTKメソッドをサポートしますが,リモートレンダリングのために遅延が発生します.ヘッドレスサーバーで表示する場合は,仮想フレームバッファをセットアップする必要があります. ipyvtklink がインストールされている必要があります.

  • 'panel' : VTKレンダーウィンドウをvtkjsオブジェクトに変換し,それをjupyterlabで可視化します.ほとんどのVTKオブジェクトをサポートします.ヘッドレスサーバーで表示する場合は,仮想フレームバッファをセットアップする必要があります. panel がインストールされている必要があります.

  • 'ipygany' : すべてのメッシュを ipygany メッシュに変換し,クライアント側でレンダリングするメッシュをストリーミングします.VTKメッシュをサポートしていますが,他にはほとんどありません. none を除き,これは仮想フレームバッファを必要としない唯一の方法です. ipygany がインストールされている必要があります.

  • 'pythreejs'`` : すべてのメッシュを pythreejs のメッシュに変換し,それらをストリームしてクライアント側でレンダリングします. ipygany を除けば,この方法は仮想フレームバッファを必要としない唯一の方法です. 必ず pythreejs がインストールされている必要があります.

  • 'static' : Jupyterlab環境内に単一の静的イメージを表示します.ヘッドレスサーバーで表示する場合も仮想フレームバッファをセットアップする必要がありますが,追加のモジュールをインストールする必要はありません.

  • 'client' : VTK.jsのクライアントサイドでレンダリングするシーングラフを, trame を通してエクスポート/シリアライズすることができます. tramejupyter-server-proxy がインストールされている必要があります.

  • 'server': リモートでレンダリングを行い,生成されたVTKイメージを trame を用いてクライアントにストリームバックします.これは 'ipyvtklink' バックエンドを置き換えるもので,より良いパフォーマンスを発揮します.ほとんどの VTK 機能をサポートしていますが,リモートレンダリングによる小さな遅延に悩まされています.ヘッドレスサーバで表示する場合は,仮想フレームバッファをセットアップする必要があります.クラウド/リモートJupyterインスタンスでは,少なくとも tramejupyter-server-proxy がインストールされている必要があります.このモードは 'trame' というエイリアスでもあります.

  • 'trame': 'server''client' の両方を一つのバックエンドに統合したTrameベースのフルバックエンドです.これには仮想フレームバッファが必要です.

  • 'none' : jupyterlab内にプロットを表示せず,専用のVTKレンダリングウィンドウを使用して表示します.これは,仮想フレームバッファがあっても,ヘッドレスサーバー上では何も生成しません.

pythreejsバックエンドを有効にします.

>>> import pyvista as pv
>>> pv.set_jupyter_backend('pythreejs')  

ipygany バックエンドを有効にします.

>>> import pyvista as pv
>>> pv.set_jupyter_backend('ipygany')  

panelバックエンドを有効にします.

>>> pv.set_jupyter_backend('panel')  

ipyvtklink バックエンドを有効にします.

>>> pv.set_jupyter_backend('ipyvtklink')  

Trameバックエンドを有効にします.

>>> pv.set_jupyter_backend('trame')  

静止画像を表示するだけです.

>>> pv.set_jupyter_backend('static')  

JupyterLab内のすべてのプロットを無効にし,準のデスクトップVTKレンダリングウィンドウを使用して表示します.

>>> pv.set_jupyter_backend(None)